package com.cwm.test.proxy.autocode.proxy;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;

public class GPClassloader extends ClassLoader{

    private File classPathFile;
    public GPClassloader() {
        String classPath = GPClassloader.class.getResource("").getPath();
        this.classPathFile = new File(classPath);
    }

    @Override
    protected Class<?> findClass(String name){
        String className = GPClassloader.class.getPackage().getName()+"."+name;
        if (classPathFile!=null){
            File classFile = new File(classPathFile,name.replace("\\.","/")+".class");
            if (classFile.exists()){
                FileInputStream in = null;
                ByteArrayOutputStream out = null;

                try {
                    in = new FileInputStream(classFile);
                    out = new ByteArrayOutputStream();
                    byte[] buff = new byte[1024];
                    int len;
                    while((len = in.read(buff)) != -1){
                        out.write(buff,0,len);
                    }
                    return defineClass(className,out.toByteArray(),0, out.size());
                }catch (Exception e){
                    e.printStackTrace();

                }

            }

        }
        return null;
    }
}
